Skip to content

feat(ci): add workflow_dispatch release trigger with dry-run and GitHub Release#16

Merged
jrusso1020 merged 1 commit intomainfrom
feat/release-workflow-dispatch
Mar 23, 2026
Merged

feat(ci): add workflow_dispatch release trigger with dry-run and GitHub Release#16
jrusso1020 merged 1 commit intomainfrom
feat/release-workflow-dispatch

Conversation

@jrusso1020
Copy link
Copy Markdown
Collaborator

@jrusso1020 jrusso1020 commented Mar 23, 2026

What

Add a PR-based release flow that works with branch protection rules. No direct pushes to main.

Why

Branch rulesets block direct pushes to main from github-actions[bot]. The previous approach tried to push version bumps directly. This uses PRs instead.

How

Three workflows:

1. Prepare Release (release.yml) — workflow_dispatch

  • Maintainer goes to Actions → Prepare Release → enters version → Run
  • Creates a release/v* branch with version bumps and opens a PR

2. Tag Release (release-tag.yml) — auto on PR merge

  • Detects when a release/v* PR is merged to main
  • Automatically creates the v* git tag

3. Publish (publish.yml) — auto on v* tag

  • Existing workflow, triggered by the auto-created tag
  • Builds, publishes all 5 packages to npm with provenance
  • Creates a GitHub Release with auto-generated notes

Full flow

Maintainer clicks "Run workflow" with version
  → PR created (release/v0.2.0 → main)
    → Maintainer reviews + merges
      → Tag v0.2.0 auto-created
        → npm publish + GitHub Release

No direct push to main. No bypass rules needed. Standard PR review flow.

Updated CONTRIBUTING.md with the new release instructions.

Test plan

  • All YAML validated
  • Test Prepare Release workflow_dispatch after merge
  • Verify auto-tag on release PR merge
  • Verify publish triggers from auto-tag

@jrusso1020 jrusso1020 force-pushed the feat/release-workflow-dispatch branch from ac16483 to f25eb06 Compare March 23, 2026 03:49
@jrusso1020 jrusso1020 merged commit cf7250f into main Mar 23, 2026
7 checks passed
@jrusso1020 jrusso1020 deleted the feat/release-workflow-dispatch branch March 23, 2026 04:00
miguel-heygen added a commit that referenced this pull request Mar 31, 2026
…tsx split (#144)

## Summary

Full code quality review of the studio package, fixing 22 of 25 findings. Removes dead code, extracts modules from App.tsx, fixes accessibility and performance issues.

## Critical fixes (3)

- **`aria-valuenow`** on seek bar now updates imperatively via `liveTime.subscribe` — screen readers previously always reported position 0
- **Speed menu** closes on outside click (was permanently stuck open)
- **RenderQueue auto-scroll** moved from render phase to `useEffect` (was violating React render purity via `queueMicrotask` during render)

## Dead code removed (-331 lines)

| File | Lines | Why dead |
|---|---|---|
| `PreviewPanel.tsx` | 180 | Replaced by NLELayout + NLEPreview |
| `useCodeEditor.ts` | 80 | Exported but never imported |
| `formatTick` alias | 2 | Deprecated, unused |
| `onClipChange` prop | 5 | Declared, never used |
| `trackH` prop | 5 | Declared, never used |
| `editRange*` + updaters in store | 60 | Never read or written |

## App.tsx extraction

| Extracted to | Lines | What |
|---|---|---|
| `components/LintModal.tsx` | 130 | Lint results modal + LintFinding type |
| `components/MediaPreview.tsx` | 75 | Image/video/audio/font file previewer |
| `utils/mediaTypes.ts` | 15 | Shared regex constants (App.tsx and AssetsTab.tsx had diverged copies) |

## Performance fixes

- `useMemo` for `compositions`/`assets` derivation from `fileTree`
- `useMemo` for `buildTree(files)` in FileTree
- Debounced `handleContentChange` PUT (600ms — was firing on every keystroke)
- CompositionsTab iframe hover debounced (300ms — was mounting immediately)
- `VideoFrameThumbnail` re-extracts frame when `src` prop changes

## Not addressed (3 — low priority)

- #6: SystemIcons consolidation (large refactor across many files)
- #16-17: Overlay dismiss pattern standardization
- #18: Inline SVG → Phosphor replacement (gradual, per-PR)

🤖 Generated with [Claude Code](https://claude.com/claude-code)
miguel-heygen added a commit that referenced this pull request Apr 7, 2026
## Summary

Adds critical rendering constraints to the `hyperframes` skill discovered from eval analysis of 27 agent-generated compositions. These guardrails prevent agents from producing compositions that technically work but render poorly.

## What it fixes

| Rule Added | Eval Prompts Affected | Issue |
| --- | --- | --- |
| Ban `repeat: -1` | #20 loading-spinner (2.0/5) | Infinite timeline broke capture engine |
| Ban async timeline construction | #16 particle-logo (2.6/5) | Timeline empty at capture time |
| Min font size 16px (labels), 20px (body) | #7, #8, #13, #14, #15, #19 | Illegible text after encoding |
| Ban full-screen dark linear gradients | #3, #5, #10, #14 | H.264 color banding |
| `<link>` fonts over CSS `@import` | #7, #24 | Font loading race conditions |

## Changes

- **Rules section**: Added `repeat: -1` ban, async timeline ban, items 8-9 to "Never do" list
- **Typography section**: Expanded font size guidance with specific minimums per text role (headlines, body, labels)
- **New "Backgrounds and Color" section**: Guidance on avoiding gradient banding
- **Output Checklist**: 5 new items covering all new constraints

## Test plan

- [ ] Run eval with updated skill and compare avg quality scores
- [x] Skill renders correctly in `/hyperframes` invocation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants